package org.dxy.trigger.http.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.dxy.api.dto.request.factory.CreateFactoryRequest;
import org.dxy.api.dto.request.factory.UpdateFactoryRequest;
import org.dxy.api.response.R;
import org.dxy.infrastructure.entity.query.FactoryViewEntity;

import java.util.List;

/**
 * 工厂应用服务接口
 * @author dxy
 * @createTime 2025/8/18
 */
public interface FactoryApplicationService {
    
    /**
     * 创建工厂
     * @param request 创建请求
     * @return 工厂ID
     */
    R<Long> create(CreateFactoryRequest request);
    
    /**
     * 更新工厂
     * @param factoryId 工厂ID
     * @param request 更新请求
     * @return 操作结果
     */
    R<Void> update(Long factoryId, UpdateFactoryRequest request);
    
    /**
     * 启用工厂
     * @param factoryId 工厂ID
     * @return 操作结果
     */
    R<Void> enable(Long factoryId);
    
    /**
     * 禁用工厂
     * @param factoryId 工厂ID
     * @return 操作结果
     */
    R<Void> disable(Long factoryId);
    
    /**
     * 删除工厂
     * @param factoryId 工厂ID
     * @return 操作结果
     */
    R<Void> delete(Long factoryId);
    
    /**
     * 分页查询工厂列表
     * @param page 分页参数
     * @param query 查询条件
     * @return 工厂列表
     */
    R<Page<FactoryViewEntity>> page(Page<FactoryViewEntity> page, FactoryViewEntity query);
    
    /**
     * 根据ID查询工厂详情
     * @param factoryId 工厂ID
     * @return 工厂详情
     */
    R<FactoryViewEntity> getById(Long factoryId);
    
    /**
     * 根据状态查询工厂列表
     * @param page 分页参数
     * @param status 状态
     * @return 工厂列表
     */
    R<Page<FactoryViewEntity>> getByStatus(Page<FactoryViewEntity> page, String status);



    /**
     * @description  : 获取启用状态的工厂列表
     * @param
     * @return
     * @date: 2025/9/2 21:42
     * @auther dxy
     */
    R<List<FactoryViewEntity>> getEnabledFactories();
}